// const path = require('path')
import path from 'path'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { splitVendorChunkPlugin } from 'vite'

// https://vitejs.dev/config/
export default defineConfig({
  // 插件配置
  plugins: [
    vue(),
    // 分包插件，将第三方库代码单独打包
    splitVendorChunkPlugin()
  ],

  // 路径别名配置
  resolve: {
    alias: {
      '@': path.resolve(__dirname, 'src'),
    },
    // 文件扩展名自动解析
    extensions: ['.js', '.vue', '.json', '.ts']
  },

  // 开发服务器配置
  server: {
    proxy: {
      '/api': {
        target: 'http://127.0.0.1:3000/',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '')
      },
    }
  },
  build:{
    outDir:"online" 
  }// const path = require('path')
import path from 'path'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { splitVendorChunkPlugin } from 'vite'

// https://vitejs.dev/config/
export default defineConfig({
  // 插件配置
  plugins: [
    vue(),
    // 分包插件，将第三方库代码单独打包
    splitVendorChunkPlugin()
  ],

  // 路径别名配置
  resolve: {
    alias: {
      '@': path.resolve(__dirname, 'src'),
    },
    // 文件扩展名自动解析
    extensions: ['.js', '.vue', '.json', '.ts']
  },

  // 开发服务器配置
  server: {
    proxy: {
      '/api': {
        target: 'http://127.0.0.1:3000/',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '')
      },
    },
    // 开发服务器配置
    host: '0.0.0.0',
    port: 5173,
    open: true,
    cors: true
  },

  // 构建配置
  build: {
    // 输出目录
    outDir: "online",
    // 静态资源目录
    assetsDir: 'assets',
    // 小于此阈值的导入或引用资源将内联为 base64 编码
    assetsInlineLimit: 4096,
    // 启用/禁用 CSS 代码拆分
    cssCodeSplit: true,
    // 构建后是否生成 source map 文件
    sourcemap: false,
    // 自定义底层的 Rollup 打包配置
    rollupOptions: {
      output: {
        // 分包策略
        manualChunks: {
          // 将 node_modules 中的代码单独打包
          'vendor': ['vue', 'vue-router', 'pinia'],
          // 将公共组件打包
          'common': ['src/components/common']
        },
        // 用于从入口点创建的块的打包输出格式[name]表示文件名,[hash]表示该文件内容hash值
        chunkFileNames: 'assets/js/[name]-[hash].js',
        // 用于命名代码拆分时创建的共享块的输出命名
        entryFileNames: 'assets/js/[name]-[hash].js',
        // 用于输出静态资源的命名，[ext]表示文件扩展名
        assetFileNames: 'assets/[ext]/[name]-[hash].[ext]'
      }
    },
    // 压缩配置
    minify: 'terser',
    terserOptions: {
      compress: {
        // 生产环境去除 console
        drop_console: true,
        // 生产环境去除 debugger
        drop_debugger: true
      }
    },
    // 启用/禁用 gzip 压缩大小报告
    reportCompressedSize: true,
    // 规定触发警告的 chunk 大小
    chunkSizeWarningLimit: 2000
  },

  // CSS 相关配置
  css: {
    // 是否开启 CSS 的 source map
    devSourcemap: false,
    // 配置 CSS modules
    modules: {
      // 自定义生成的类名
      generateScopedName: '[name]__[local]___[hash:base64:5]'
    }
  }
})


  // CSS 相关配置
  css: {
    // 是否开启 CSS 的 source map
    devSourcemap: false,
    // 配置 CSS modules
    modules: {
      // 自定义生成的类名
      generateScopedName: '[name]__[local]___[hash:base64:5]'
    }
  }
})
